<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>附录E. 模型与算法 | Winchell</title>
    <meta name="description" content="A VitePress Site">
    <meta name="generator" content="VitePress v1.5.0">
    <link rel="preload stylesheet" href="/assets/style.BXT8wSrA.css" as="style">
    <link rel="preload stylesheet" href="/vp-icons.css" as="style">
    
    <script type="module" src="/assets/app.B8hUBw94.js"></script>
    <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/assets/chunks/theme.CSdpI3Jj.js">
    <link rel="modulepreload" href="/assets/chunks/framework.CMtr6uOw.js">
    <link rel="modulepreload" href="/assets/algorithm_RTKLIB手册_09-appendixE.md.QREboJCg.lean.js">
    <link rel="icon" href="https://i.ibb.co/F80kShv/doghead.jpg">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://i.ibb.co/F80kShv/doghead.jpg" alt data-v-8426fc1a><!--]--><span data-v-1168a8e4>Winchell</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/examples/markdown-examples.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Examples</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-dc692963 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><!----><span data-v-cf11d7a2>RTK</span><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><div class="items" data-v-b98bc113><!--[--><!--[--><div class="VPMenuLink" data-v-b98bc113 data-v-35975db6><a class="VPLink link" href="/algorithm/RTKLIB手册/" data-v-35975db6><!--[--><span data-v-35975db6>RTKLIB手册</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b98bc113 data-v-35975db6><a class="VPLink link" href="/algorithm/RTKLIB源码解析/" data-v-35975db6><!--[--><span data-v-35975db6>RTKLIB源码解析</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-dc692963 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><!----><span data-v-cf11d7a2>GUI</span><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><div class="items" data-v-b98bc113><!--[--><!--[--><div class="VPMenuLink" data-v-b98bc113 data-v-35975db6><a class="VPLink link" href="/gui/vitepress/01-tutorials.html" data-v-35975db6><!--[--><span data-v-35975db6>Vitepress</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/knowledge/01-common.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Knowledge</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/vuejs/vitepress" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/vuejs/vitepress" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-17a5e62e><button data-v-17a5e62e>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b7550ba0><!----><div class="items" data-v-b7550ba0><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB手册/" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>RTKLIB手册</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/01-overview.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>1. 摘要</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/02-prepare.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>2. 准备</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/03-instructions.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>3. 操作指南</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/04-build.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>4. 应用构建</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/05-appendixA.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录A. CUI指令</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/06-appendixB.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录B. 文件格式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/07-appendixC.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录C. C API</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/08-appendixD.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录D. 文件与报文</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/09-appendixE.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录E. 模型与算法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/10-appendixF.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录F. 配置文件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/11-appendixG.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>附录G. GNSS信号</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b7550ba0 data-v-b7550ba0><div class="item" data-v-b7550ba0><div class="indicator" data-v-b7550ba0></div><a class="VPLink link link" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/12-reference.html" data-v-b7550ba0><!--[--><p class="text" data-v-b7550ba0>参考文献</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>目录</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _algorithm_RTKLIB%E6%89%8B%E5%86%8C_09-appendixE" data-v-39a288b8><div><h1 id="附录e-模型与算法" tabindex="-1">附录E. 模型与算法 <a class="header-anchor" href="#附录e-模型与算法" aria-label="Permalink to &quot;附录E. 模型与算法&quot;">​</a></h1><p>该附录简要描述了RTKLIB中涉及的模型和算法。附录中使用的常见模型或方程的缩写如下所示。</p><p><span class="align-colon"><!----></span> : 光速 (m/s)<br><span class="align-colon"><!----></span> : <!----> 频段伪距 (m)<br><span class="align-colon"><!----></span> : <!----> 频段多普勒频率 (Hz)<br><span class="align-colon"><!----></span> : <!----> 频段载波相位 (cycle)<br><span class="align-colon"><!----></span> : <!----> 频段载波相位 (m)<br><span class="align-colon"><!----></span> : 导航信号发送至接收机时间，即接收机收到信号的时间 (s)<br><span class="align-colon"><!----></span> : 卫星发送导航信号时间 (s)<br><span class="align-colon"><!----></span> : 卫星和接收机天线之间的几何距离 (m)<br><span class="align-colon"><!----></span> : 卫星和接收机天线之间的伪距率 (m/s)<br><span class="align-colon"><!----></span> ：t时刻ECEF下卫星位置（m）<br><span class="align-colon"><!----></span> ：t时刻ECEF下卫星速度(m/s)<br><span class="align-colon"><!----></span> ：t时刻ECEF下接收机天线位置（m）<br><span class="align-colon"><!----></span> ：t时刻ECEF下接收机天线速度（m/s）<br><span class="align-colon"><!----></span> ：ECEF下，接收机到卫星的LOS单位向量<br><span class="align-colon"><!----></span> ：当地坐标系下，接收机到卫星的单位向量<br><span class="align-colon"><!----></span> ：ECEF坐标系到大地坐标系的旋转变换矩阵<br><span class="align-colon"><!----></span> ：ECEF坐标系到卫星载体坐标系的旋转变换矩阵<br><span class="align-colon"><!----></span> ：接收机天线位置的纬度/大地维度<br><span class="align-colon"><!----></span> ：接收机天线位置的经度/大地经度<br><span class="align-colon"><!----></span> ：当前位置观测，卫星的方位角（rad）<br><span class="align-colon"><!----></span> ：当前位置观测，卫星的高度角（rad）<br><span class="align-colon"><!----></span> ：t时刻接收机钟差（s）<br><span class="align-colon"><!----></span> ：t时刻接收机钟漂——频差（s/s）<br><span class="align-colon"><!----></span> ：t时刻卫星钟差（s）<br><span class="align-colon"><!----></span> ：t时刻卫星钟漂——频差（s/s）<br><span class="align-colon"><!----></span> ：对流层延迟（m）<br><span class="align-colon"><!----></span> ：L频段电离层延迟（m）<br><span class="align-colon"><!----></span> ：<!---->频段载波频率（Hz）<br><span class="align-colon"><!----></span> ：<!---->频段波长（m）<br><span class="align-colon"><!----></span> ：L频段载波偏差（cycle）<br><span class="align-colon"><!----></span> ：L频段载波整周模糊度（cycle）<br><span class="align-colon"><!----></span> ：伪距测量误差（m）<br><span class="align-colon"><!----></span> ：载波相位测量误差（cycle）<br><span class="align-colon"><!----></span> ：载波相位测量误差（m）<br><span class="align-colon"><!----></span> ：地球自转角速度（rad/s）<br><span class="align-colon"><!----></span> ：当地坐标系下，L频段接收机天线相位中心偏差(PCO)（m）<br><span class="align-colon"><!----></span> ：卫星载体坐标系下，卫星天线L波段相位中心偏差(PCO)（m）<br><span class="align-colon"><!----></span> ：<!---->频段接收机天线相位中心变化PCV（m）<br><span class="align-colon"><!----></span> ：<!---->频段卫星天线相位中心变化PCV（m）<br><span class="align-colon"><!----></span> ：接收机天线到卫星的天底角（<!---->）<br><span class="align-colon"><!----></span> ：当地坐标系下，接收机天线位置处的地球潮偏移<br><span class="align-colon"><!----></span> ：相位缠绕效应（cycle）<br><span class="align-colon"><!----></span> ：卫星时钟的相对论改正/Trel<br><span class="align-colon"><!----></span> ：t时刻ECI和ECEF的坐标系转换矩阵<br><span class="align-colon"><!----></span> ：绕X轴旋转θ得到的坐标旋转矩阵<br><span class="align-colon"><!----></span> ：绕Y轴旋转θ得到的坐标旋转矩阵<br><span class="align-colon"><!----></span> ：绕Z轴旋转θ得到的坐标旋转矩阵<br><span class="align-colon"><!----></span> ：卫星端，卫星j和k之间的单差<br><span class="align-colon"><!----></span> ：地面端，基准站b和移动站/r之间的单差<br><span class="align-colon"><!----></span> ：对流层天顶总延迟（m）<br><span class="align-colon"><!----></span> ：对流层天顶干延迟（m）<br><span class="align-colon"><!----></span> ：对流层东向梯度分量<br><span class="align-colon"><!----></span> ：对流层北向梯度分量 <br><span class="align-colon"><!----></span> ：天顶对流层干延迟映射函数<br><span class="align-colon"><!----></span> ：天顶对流层湿延迟映射函数<br><span class="align-colon"><!----></span> ：电离层延迟映射函数<br></p><h2 id="e-1-时间系统" tabindex="-1">E.1 时间系统 <a class="header-anchor" href="#e-1-时间系统" aria-label="Permalink to &quot;E.1 时间系统&quot;">​</a></h2><p>RTKLIB内部采用GPS时间进行GNSS数据处理和定位；UTC时间（协调世界时）是一个不连续时间，简而言之，它和GPS时间之间存在一个跳秒（或闰秒）的关系。GPS时间通常采用周数和周内秒来表示其起始历元为1980年1月6日00:00:00 UTC。但是对于double类型变量来说，其距离精度只有0.04米。因此，在实际运算时，RTKLIB调用C标准库中的时间结构体并定义了<code>gtime_t</code>类型：</p><div class="language-c vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">c</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">typedef</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> struct</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    time_t</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> time;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /* time (s) expressed by standard time_t */</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">    double</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> sec;</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">  /* fraction of second under 1 s */</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">} </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">gtime_t</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre></div><p><code>time_t</code> 通常通过一个无符号的32位整数来实现，表示从1970年1月1日00:00:00开始的总秒数。由于整数位的长度限制，，<code>gtime_t</code> 无法处理1970年1月1日之前或2038年1月19日之后的时间。</p><p><code>gtime_t</code> 中的<code>sec</code>字段用于存储小数秒。<code>sec</code>在距离上的分辨率为6.7×10⁻⁸米，足以满足GNSS高精度定位计算的需求。RTKLIB还提供了几个有用的API来处理<code>gtime_t</code>，包括加、减以及时间格式的转换。</p><p>不同导航系统的时间定义有所差异，以下是所有时间系统特性的汇总。</p><p style="text-align:center;">表E.1-1 时间系统汇总</p><table class="tg"><thead><tr><th class="tg-9wq8">时间系统</th><th class="tg-9wq8">连续性</th><th class="tg-9wq8">起始历元</th><th class="tg-0pky">与UTC的关系</th><th class="tg-0pky">转换公式</th></tr></thead><tbody><tr><td class="tg-lboi">GPST</td><td class="tg-lboi">连续</td><td class="tg-0pky">1980年1月6日00:00:00 UTC</td><td class="tg-0pky">UTC比GPST慢，差值为累积的闰秒数（Δt<sub>LS</sub>）</td><td class="tg-0pky">t<sub>UTC</sub>=t<sub>GPST</sub>-Δt<sub>LS</sub></td></tr><tr><td class="tg-lboi">GLONASST</td><td class="tg-lboi">不连续</td><td class="tg-0pky">与UTC（SU）对齐</td><td class="tg-0pky">UTC比GLONASST慢3小时，差值为固定偏移和闰秒数</td><td class="tg-0pky">t<sub>UTC</sub>=t<sub>GLONSASST</sub>-10800</td></tr><tr><td class="tg-0pky">GST</td><td class="tg-0pky">连续</td><td class="tg-0pky">1999年8月22日00:00:00 UTC</td><td class="tg-0pky">GST比UTC快13秒，与GPST对齐，但有1024周的差异和小时间偏移（GGTO）</td><td class="tg-0pky">无直接公式，需考虑与GPST的对齐关系</td></tr><tr><td class="tg-0pky">QZSST</td><td class="tg-0pky">连续</td><td class="tg-0pky">与GPST对齐</td><td class="tg-0pky">QZSST与GPST具有相同的起始点和秒定义</td><td class="tg-0pky">无直接公式，可直接处理为GPST</td></tr><tr><td class="tg-0pky">BDT</td><td class="tg-0pky">连续</td><td class="tg-0pky">2006年1月1日00:00:00 UTC</td><td class="tg-0pky">BDT比UTC快14秒，时间差被控制在100纳秒以内（模1秒）</td><td class="tg-0pky">t<sub>BDT</sub>=t<sub>GPST</sub>-14</td></tr></tbody></table><p><strong>1. GPST（GPS时间）和UTC（协调世界时）</strong></p><p>现在的UTC时间比GPST慢，因为它当前闰掉的时间为负数。GPST与UTC（协调世界时）之间的粗略转换可以简单地表示为：</p><p><!----><!----></p><p>其中，<!---->和<!---->分别是以秒为单位的UTC时间和GPS时间。<!---->是由于自1980年1月6日以来累积的闰秒（或跳秒）导致的UTC与GPST之间的时间差（秒）。<!---->的值如表E.1-1所示。</p><p style="text-align:center;">表E.1-2 GPST-UTC值（截至2025年2月）</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Time Since (in UTC)     𝛥𝑡𝐿𝑆 (s)</span></span>
<span class="line"><span>-----------------------------</span></span>
<span class="line"><span>1980-01-06 00:00:00       0</span></span>
<span class="line"><span>1981-07-01 00:00:00       1</span></span>
<span class="line"><span>1982-07-01 00:00:00       2</span></span>
<span class="line"><span>1983-07-01 00:00:00       3</span></span>
<span class="line"><span>1987-01-01 00:00:00       4</span></span>
<span class="line"><span>1988-01-01 00:00:00       5</span></span>
<span class="line"><span>1990-01-01 00:00:00       6</span></span>
<span class="line"><span>1991-01-01 00:00:00       7</span></span>
<span class="line"><span>1992-07-01 00:00:00       8</span></span>
<span class="line"><span>1993-07-01 00:00:00       9</span></span>
<span class="line"><span>1994-07-01 00:00:00      10</span></span>
<span class="line"><span>1996-01-01 00:00:00      11</span></span>
<span class="line"><span>1999-01-01 00:00:00      13</span></span>
<span class="line"><span>1997-07-01 00:00:00      12</span></span>
<span class="line"><span>2006-01-01 00:00:00      14</span></span>
<span class="line"><span>2009-01-01 00:00:00      15</span></span>
<span class="line"><span>2012-07-01 00:00:00      16</span></span>
<span class="line"><span>2015-07-01 00:00:00      17</span></span>
<span class="line"><span>2017-01-01 00:00:00      18</span></span></code></pre></div><p>公式（E.1.1）或（E.1.2）的近似精度在几十纳秒以内。通过使用GPS导航消息中的UTC参数，我们可以更精确地将GPST与UTC之间的转换，公式如下：</p><p><!----></p><p>其中，<!---->、<!---->、<!---->、<!---->、<!---->和<!---->是GPS导航消息中提供的UTC参数。更严格地说，公式（E.1.3）中的UTC是UTC(USNO)，即美国本地实现的UTC。UTC与UTC(USNO)之间的差异可以在BIPM提供的T公报中获得，这种差异通常在纳秒级别。</p><p><strong>2. GLONASST (GLONASS时间)</strong></p><p>GLONASST（GLONASS时间）基于UTC（SU），因此它同样包含了闰秒。GLONASST还与当地时间对齐。因此，大致上，GLONASST中的时间<!---->可以转换为UTC中的时间<!---->。</p><p><!----></p><p>更准确地说，GLONASS导航信息中的GLONASST的UTC参数应类似于GPST（GPS时间）和UTC转换的方式使用。忽略闰秒和3小时的时差，GPST与GLONASST之间的差异通常为100纳秒或几个100纳秒的水平。</p><p><strong>3. GST (Galileo时间)</strong></p><p>伽利略系统时间（Galileo System Time，GST）与GPST类似，同样有周与周内秒组成。GST的起始历元为1999年8月22日00:00:00 UTC（这个时间刚好和GPS的起始时间1980年1月6日00:00:00 UTC相隔1024周）。在起始历元时，GST比UTC快13秒。GST是连续时间，不插入或删除闰秒。因此，GST与GPS时间（GPST）对齐，除了时间系统原点的1024周差异和一个小的时间偏移（Galileo/GPS时间差异，GGTO）。根据RINEX约定，伽利略周数与GPS周数相等。</p><p><strong>4. QZSST (QZSS时间)</strong></p><p>QZSST（QZSS时间）与GPST（GPS时间）对齐。它与GPST具有相同的起始点和相同的秒定义，QZSST可以像GPST一样处理。</p><p><strong>5. BDT (北斗时间)</strong></p><p>北斗时间（BDT）也是一个连续时间系统（没有闰秒的插入或删除）。BDT的起始历元为2006年1月1日00:00:00 UTC。BDT与UTC之间的时间差被控制在100纳秒以内（模1秒）。因此，GPS时间（GPST）中的时间<!---->可以大致通过以下公式转换为BDT中的时间<!---->，精度约为200纳秒：</p><p><!----></p><p>BDT同样需要使用北斗导航信息中的UTC参数，然后进行类似GPST与UTC之间的转换。</p><div class="tip custom-block"><p class="custom-block-title">Q1：为什么使用double类型表示GPS时间，距离精度是0.04米？</p><p>首先搞清楚要干嘛。这里是想说明以double类型来表示GPS时间，数值精度会很低。我们可以进行如下分析：</p><p><strong>1. double 类型的精度</strong></p><ul><li>double 类型是 64 位浮点数，遵循 IEEE 754 标准。</li><li>其尾数部分有 52 位，因此精度为：<br><!----></li></ul><p><strong>2. GPS 时间的表示</strong></p><ul><li>GPS 时间通常以周数（week）和周内秒（second of week）表示。</li><li>一周的总秒数为：<br> 604800s (7天×86400s/天)</li><li>用 double 类型表示 GPS 时间时，其最小分辨率为：<br><!----></li></ul><p><strong>3. 时间分辨率转换为距离误差</strong></p><ul><li>光速 c 为：<br><!----></li><li>时间分辨率对应的距离误差为（使用 double 类型表示 GPST 时的最小分辨率）：<br><!----></li><li>如果用double类型表示一个比604800更大的数值时候，距离误差还会比0.04m更大（当时间需要参与运算时，要考虑这个误差的；当时间只是用来标识与显示时，则可以不用管这个误差）。</li></ul></div><h2 id="e-2-坐标系统" tabindex="-1">E.2 坐标系统 <a class="header-anchor" href="#e-2-坐标系统" aria-label="Permalink to &quot;E.2 坐标系统&quot;">​</a></h2><p>在RTKLIB中，接收机和卫星的位置以ECEF（地心地固坐标系）的X、Y、Z分量表示。ECEF框架的选择取决于卫星星历和基准站位置，并未明确固定。例如，使用GPS信号时，单点定位结果通常基于WGS84坐标系。在基线分析中，移动站的位置会被转换到与基准站相同的ECEF框架中。实际上，常用的ECEF框架（如WGS84、PZ90.02和ITRF）在广播星历或单点定位精度范围内是等效的。然而，对于基线分析或PPP（精密单点定位），需要更严格地处理坐标系，使用统一的坐标系可以有效减少处理误差。</p><p>(1) 从大地坐标转换为ECEF XYZ坐标 大地坐标是基于参考椭球体定义的，如图E.2-1所示。大地纬度<!---->、经度<!---->和椭球高<!---->可以转换为ECEF XYZ坐标<!---->，转换公式如下：</p><p><!----></p><p><!----></p><p><!----></p><p>其中，<br><!---->：地球参考椭球体的长半轴（米）<br><!---->：地球参考椭球体的扁率</p><p>当前版本的RTKLIB始终使用WGS84坐标系提供的参考椭球体的<!---->和<!---->值如下：</p><p><!----> <br><!----></p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250218-224823.jpg" alt="Reference Ellipsoid"></p><p style="text-align:center;">图E.2-1 参考椭球体</p><p>(2) 将ECEF坐标转换为大地坐标 将ECEF中的XYZ位置 <!----> 转换为大地坐标，需采用以下步骤。在此过程中，大地纬度是通过迭代方法计算得出的。</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>(3) 本地坐标与ECEF坐标之间的转换 接收机位置的局部坐标（也称为ENU坐标）在GNSS导航处理中经常被使用。从ECEF坐标到局部坐标的旋转矩阵 <!---->​ 表示为：</p><p><!----></p><p>其中，<!---->和<!---->分别是接收机位置的大地纬度和经度。通过使用旋转矩阵<!---->以及接收机在ECEF坐标系中的位置<!---->，可以将ECEF坐标系中的位置<!---->转换为局部坐标系中的位置<!---->，转换公式如下：</p><p><!----></p><p>(4) 似大地水准面模型 为了从椭球高得到大地高，我们需要考虑似大地水准面高。大地高 hgeod​（单位：米）表示为：</p><p><!----></p><p>其中，<!----> 是在纬度 <!----> 和经度 <!---->​ 处的似大地水准面高（单位：米）。RTKLIB支持通过处理选项“似大地水准面模型”选择以下几种似大地水准面模型。所有这些模型均以纬度和经度网格点上的似大地水准面高提供。RTKLIB使用双线性插值来获取适用于特定纬度和经度位置的值。除了内部模型外，使用这些似大地水准面模型时，需要下载相应的似大地水准面数据文件，并将其文件路径设置为处理选项“似大地水准面数据文件”。</p><p>(a) 内置模型：基于EGM96的1度×1度网格似大地水准面模型 (b) EGM96：15&quot; x 15&quot; 网格的EGM96似大地水准面模型 (c) EGM2008：2.5&quot; x 2.5&quot; 网格或1弧秒×1弧秒网格的EGM2008似大地水准面模型 (d) GSI 2000：1&quot; x 1.5&quot; 弧秒网格的GSI 2000似大地水准面模型（仅适用于日本列岛周边）</p><h2 id="e-3-gnss信号测量模型" tabindex="-1">E.3 GNSS信号测量模型 <a class="header-anchor" href="#e-3-gnss信号测量模型" aria-label="Permalink to &quot;E.3 GNSS信号测量模型&quot;">​</a></h2><p><strong>1. GNSS信号结构</strong></p><p>图E.3-1展示了一个典型的GNSS信号结构。GNSS信号通常由载波频率（Carrier）、扩频码（Code）和导航数据（Data）的乘积组成。扩频码也称为伪随机噪声（PRN）码。GPS、GLONASS、Galileo、QZSS、北斗和SBAS提供的这些GNSS信号的详细规格可以在附录G中找到。</p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250218-224511.jpg" alt="GNSS Signal Structure"></p><p style="text-align:center;">图E.3-1 GNSS信号结构</p><p><strong>2. 伪距测量模型</strong></p><p>伪距指的“从接收机天线到卫星天线的距离，其中包含了接收机和卫星的时钟偏移（以及其他偏差，如大气延迟）”[9]。<!---->伪距 <!----> 可以用接收机时钟测量的接收信号时间 <!----> 和卫星时钟测量的发送信号时间 <!----> 来表达：</p><p><!----></p><p>该方程可以用卫星与接收机天线之间的几何距离 <!---->，接收机和卫星的时钟偏差 <!---->，电离层和对流层延迟 <!---->，<!---->，以及测量误差 <!----> 来表示如下：[64]</p><p><!----></p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250219-215841.jpg" alt="Pseudorange Model "></p><p style="text-align:center;">图E.3-2 伪距模型</p><p><strong>3. 载波相位测量模型</strong></p><p>载波相位是“对卫星信号接收载波与接收机生成的参考频率之间的拍频进行测量”[9]。第 <!----> 个载波的载波相位 <!----> 可以表示为：</p><p><!----></p><p>其中，<!----> 是初始时间（秒），<!----> 是接收机本地振荡器的 <!----> 相位（周期），<!----> 是时间 <!----> 时发射的导航信号的 <!----> 相位（周期）。<!----> 是接收机本地振荡器在时间 <!----> 时的 <!----> 初始相位（周期），<!----> 是时间 <!----> 时发射的导航信号的 <!----> 初始相位（周期）。</p><p><!----> 相位范围 <!---->，定义为载波相位乘以载波频率 <!---->（以米为单位），也可以通过使用载波相位偏差 <!----> 和载波相位校正项 <!----> 来表达，后者包括天线相位中心偏移和变化、地球潮汐导致的站点位移、相位缠绕效应以及卫星钟的相对论校正：</p><p><!----></p><p><!----> 通常被称为载波相位整数模糊度、载波周期模糊度或简称为模糊度。有关载波相位校正项的详细公式，请参考附录 E.9。</p><p><strong>4. 接收机与卫星天线之间的几何距离</strong></p><p>几何距离被定义为卫星天线相位中心位置与接收机天线相位中心位置在惯性坐标系中的物理距离。首先，信号传输时间 <!----> 可以通过以下方式推导出来：</p><p><!----></p><p>方程的两边都包含了 <!---->。因此，需要进行几次迭代来解这个方程。几何距离可以通过在 ECEF（地心地固）坐标系中使用接收机和卫星天线相位中心位置在时间 <!----> 时的 <!----> 和在时间 <!----> 时的 <!----> 来表示：</p><p><!----></p><p>其中，<!----> 是时间 <!----> 时从 ECEF（地心地固）到 ECI（地心惯性）坐标系的转换矩阵。为了在 ECEF 坐标系中表达几何距离，必须考虑地球自转效应以获得几何距离。该方程可以用以下方程之一近似，精度在1毫米级别以内。当前版本的 RTKLIB 始终使用方程 (F.3.8b) 来计算几何距离。(F.3.8b) 中的最后一个项有时被称为萨格纳克效应（Sagnac effect）。</p><p><!----><!----><!----></p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250219-234443.jpg" alt="Geometric Range and Earth Rotation Correction"></p><p style="text-align:center;">图E.3-3 几何距离和地球自转校正</p><p><strong>5. 卫星方向的方位角和仰角</strong></p><p>接收机到卫星的单位视线（LOS）向量在 ECEF（地心地固）坐标系中可以表示为：</p><p><!----></p><p>在方程中，忽略了地球自转效应。卫星方向从接收站点出发的方位角 <!----> 和仰角 <!----> 可以从以下公式推导出来：</p><p><!----><!----><!----></p><p>其中，<!----> 是从 ECEF 坐标系到接收机位置的局部坐标系的坐标旋转矩阵。有关该矩阵的详细形成，请参考 E.2。</p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250219-235235.jpg" alt=" Local Coordinates and Azimuth and Elevation Angles"></p><p style="text-align:center;">图E.3-4 局部坐标系与方位角和仰角</p><h2 id="e-4-gnss卫星星历与钟差" tabindex="-1">E.4 GNSS卫星星历与钟差 <a class="header-anchor" href="#e-4-gnss卫星星历与钟差" aria-label="Permalink to &quot;E.4 GNSS卫星星历与钟差&quot;">​</a></h2><p>RTKLIB 支持 GPS、GLONASS、Galileo、QZSS、BeiDou 和 SBAS 的广播星历和钟差数据。它还支持作为 SP3-c 文件和钟差 RINEX 文件提供的精确星历和钟差数据，这些文件包括 Galileo、QZSS 和 BeiDou，用于后处理模式。对于实时模式，支持使用 SBAS 长期和快速修正后的广播星历和钟差数据，以及使用 RTCM 3 SSR（状态空间表示）修正的数据。以下方程展示了 RTKLIB 中使用的星历和钟差模型。</p><p>(1) GPS、Galileo 和 QZSS 的广播星历和钟差数据 [1][5][6]</p><p>GPS、Galileo 和 QZSS 的广播星历和卫星钟差参数在导航消息中给出如下：</p><p><!----></p><p>通过使用这些参数，可以计算出卫星在 ECEF 坐标系中的位置（天线相位中心位置）<!---->、卫星钟差 <!----> 和钟漂 <!---->。</p><p><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----><!----></p><p>其中：</p><p><!----> : 地球引力常数（<!----> 用于 GPS 和 QZSS，<!----> 用于 Galileo）<br><!----> : 地球角速度（<!----> rad/s）<br><!----> for <!----> pseudorange<br><!----> : 群延迟参数，用于 GPS 和 QZSS，<!----> for Galileo (s)</p><p>开普勒方程（E.4.4）可以通过牛顿法迭代求解。</p><p><!----></p><p><!----></p><p><!----></p><p>广播星历和时钟在处理选项“Satellite Ephemeris/Clock”设置为“Broadcast”时适用，同样适用于GLONASS、BeiDou和SBAS。</p><p><strong>2. GLONASS的广播星历和时钟</strong> [4]</p><p>GLONASS的广播星历和时钟参数在导航消息中给出如下：</p><p><!----></p><p>卫星位置 <!----> 和速度 <!----> 在地心固定坐标系（ECEF，PZ90.02）中的微分方程可以表示为：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中：</p><p><!---->：地球半长轴（6378136.0 m）<br><!---->：地球引力常数（398600.444 × 10⁹ m³/s²）<br><!---->：地球角速度（7.292115 × 10⁻⁵ rad/s）<br><!---->：地球引力场的二阶球谐系数（1082625.7 × 10⁻⁹）<br><!----></p><p>注意，GLONASS ICD 5.1 [4] 的 A.3.1.2 中的两个勘误已在上述模型中得到修正。</p><p>卫星位置 <!----> 和速度 <!----> 在时间 <!----> 可以通过 RK4（Runge-Kutta 4阶和4阶段）数值积分方法求解这些微分方程，初始条件为参考时间 <!----> 时的卫星位置 <!----> 和速度 <!---->。对于卫星时钟偏差 <!----> 和漂移 <!----> 在历元时间 <!----> 也同样推导如下：</p><p><!----></p><p><!----></p><p>卫星钟中的相对论效应已包含在GLONASS时钟参数中。因此，在此情况下不应用相对论校正。</p><p><strong>3. 北斗卫星的广播星历和时钟</strong> [7]</p><p>对于北斗卫星，与GPS、Galileo和QZSS相似的星历和时钟参数在导航消息中提供如下：</p><p><!----></p><p>对于北斗的MEO和IGSO卫星，使用的公式与(1)中GPS星历和时钟相同，只是<!---->，<!----> rad/s，且时间 <!----> 以BDT（北斗时间）表示。</p><p>为了在BDT（北斗时间）的时间 <!----> 获取北斗GEO卫星的位置 <!---->，应替换方程 (E.5.13) 和 (E.5.14)，具体如下：</p><p><!----></p><p><!----></p><p>其中：</p><p><!----></p><p><strong>4. SBAS的广播星历和时钟</strong> [8]</p><p>SBAS GEO卫星的导航消息参数在SBAS消息（消息类型9）中提供如下：</p><p><!----></p><p>通过使用这些参数，可以计算出在ECEF坐标系中的卫星位置 <!----> 和卫星时钟偏差 <!---->。</p><p><!----></p><p><!----></p><p><strong>5. SBAS轨道和时钟改正</strong> [8]</p><p>SBAS轨道和时钟改正被定义为以下参数：</p><p><!----></p><p>IOD表示目标广播星历和时钟参数。修正后的卫星位置 <!----> 在时间 <!----> 时计算如下：</p><p><!----></p><p>其中：</p><p><!----> : 由带IOD的广播星历在时间 <!----> 计算的卫星位置（米）</p><p>校正后的卫星时钟偏差 <!----> 在时间 <!----> 时通过SSR校正计算如下：</p><p><!----></p><p>其中：</p><p><!----> : 由带IOD的广播时钟在时间 <!----> 计算的卫星时钟偏差。</p><p>SBAS校正与广播星历和时钟结合使用的情况是在处理选项“Satellite Ephemeris/Clock”设置为“Broadcast+SBAS”时。</p><p><strong>6. 精密星历和时钟</strong></p><p>GPS、GLONASS、Galileo、QZSS和BeiDou的精确星历通常以SP3-c文件的形式提供，这些文件包含每15分钟或5分钟历元的卫星位置和速度（可选）。为了在时间 <!----> 获得卫星位置，需要适当的插值。RTKLIB使用固定阶数（<!---->）的Newton-Neville多项式插值算法，如下所示：</p><p><!----></p><p><!----></p><p>其中 <!----> 是插值的多项式阶数，<!----> 是历元时间 <!----> 处每个组件的星历值。例如，在 <!----> 的情况下，时间 <!----> 处的插值值 <!----> 可以推导为：</p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250220-154054.jpg" alt="interpolate equations"></p><p>请注意，精确星历通常提供卫星的质心（CoM，中心质量）位置，而非天线相位中心位置。因此，用户应校正卫星天线相位中心偏移以使用精确星历。详情请参阅附录E.8。</p><p>尽管精确星历通常使用高阶多项式插值，但对于以SP3-c或时钟RINEX文件形式提供的精确时钟，采用了简单的线性插值，表达式如下：</p><p><!----></p><p>对于由IGS（国际GNSS服务）提供的精确时钟，应进行相对论效应的校正：[68]</p><p>卫星时钟偏差 <!----> 的相对论校正表达式如下：</p><p><!----></p><p>其中，<!----> 和 <!----> 是从精确星历推导出的卫星位置和速度。</p><p>精确星历和时钟在处理选项“Satellite Ephemeris/Clock”设置为“Precise”时适用。</p><p>IOD 表示目标广播星历和时钟参数。校正后的卫星位置 <!----> 在时间 <!----> 时计算如下：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中：</p><p><!----> : 由带IOD的广播星历在时间 <!----> 计算的卫星位置（米）<br><!----> : 由带IOD的广播星历在时间 <!----> 计算的卫星速度（米/秒）</p><p>卫星速度 <!----> 通过以下微分近似计算，其中 <!---->（秒）。</p><p><!----></p><p>校正后的卫星时钟偏差 <!----> 在时间 <!----> 时通过SSR校正计算如下：</p><p><!----></p><p><!----></p><p>其中：</p><p><!----> : 由带IOD的广播时钟在时间 <!----> 计算的卫星时钟偏差，带有以下相对论校正：</p><p><!----></p><p>SSR校正与广播星历和时钟结合使用的情况是在处理选项“Satellite Ephemeris/Clock”设置为“Broadcast+SSR APC”或“Broadcast+SSR CoM”时。</p><h2 id="e-5-对流层与电离层模型" tabindex="-1">E.5 对流层与电离层模型 <a class="header-anchor" href="#e-5-对流层与电离层模型" aria-label="Permalink to &quot;E.5 对流层与电离层模型&quot;">​</a></h2><p><strong>1. 对流层模型</strong></p><p>标准大气可以表示为：</p><p><!----></p><p><!----></p><p><!----></p><p>其中 <!----> 是总压强（hPa），<!----> 是空气的绝对温度（K），<!----> 是大地高程（高于平均海平面，单位：m），<!----> 是水蒸气的偏压（hPa），<!----> 是相对湿度。对流层延迟 <!----> 由Saastamoinen模型表示，基于从标准大气导出的 <!---->、<!----> 和 <!---->。</p><p><!----></p><p>其中 <!----> 是天顶角（弧度），定义为 <!---->。</p><p>标准大气和Saastamoinen模型在处理选项“Troposphere Correction”设置为“Saastamoinen”时适用，其中大地高程由椭球高程近似，且相对湿度固定为70%。</p><p><strong>2. SBAS 对流层模型</strong></p><p>如果处理选项“对流层校正”设置为“SBAS”，则应用 SBAS 接收器规范中定义的 SBAS 对流层模型。该模型常被称为“MOPS 模型”。参考 [8] A.4.2.4 获取详情。</p><p><strong>3. 精确对流层模型</strong></p><p>如果处理选项“对流层校正”设置为“估计 ZTD”或“估计 ZTD+Grad”，则应用更精确的对流层模型，并使用严格的映射函数如下：</p><p><!----></p><p><!----></p><p>其中：</p><p><!----> : 对流层天顶总延迟 (m)<br><!----> : 对流层天顶静水延迟 (m)<br><!----> : 静水映射函数<br><!----> : 湿映射函数</p><p>在 RTKLIB 中，对流层天顶静水延迟由 Saastamoinen 模型（E.5.4）给出，假设天顶角 <!----> 且相对湿度 <!---->。对于映射函数，RTKLIB 默认使用 Niell 映射函数（Niell mapping function）[70]。天顶总延迟 <!----> 和梯度参数 <!---->、<!---->（在“估计 ZTD+Grad”情况下）作为未知参数在参数估计过程中被估算。对于映射函数，RTKLIB 自版本 2.4.2 起可以通过设置编译器选项 -DIERS_MODEL 使用 GMF [71]。</p><p><strong>4. 广播电离层模型</strong></p><p>对于单频GNSS用户的电离层校正，GPS和QZSS导航数据包括以下广播电离层参数。</p><p><!----></p><p>通过使用这些电离层参数，可以按照以下过程推导出<!---->电离层延迟<!---->（米）。该模型通常称为Klobuchar模型。</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>如果处理选项 &quot;Ionosphere Correction&quot; 设置为 &quot;Broadcast&quot; 或 &quot;QZSS Broadcast&quot;。</p><p><strong>5. SBAS 电离层模型</strong></p><p>SBAS 对电离层延迟的校正由消息类型 18（电离层网格点掩模）和消息类型 26（电离层延迟校正）提供。如果处理选项 &quot;Ionosphere Correction&quot; 设置为 &quot;SBAS&quot; 并且这些 SBAS 消息在输入文件中提供，RTKLIB 使用 SBAS 电离层校正。关于模型的算法和 IGPs（电离层网格点）的定义，请参阅 SBAS 接收器规范 [8] 的 A.4.4.9 和 A.4.4.10。</p><p><strong>6. 单层模型</strong></p><p>电离层通常被建模为图 E.5-1 所示的简单单层模型。单层模型也被称为薄壳模型。</p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250220-165458.jpg" alt="Single Layer Ionosphere Model"></p><p>在模型中，IPP（电离层刺点）的纬度<!---->（rad）和经度<!---->（rad）可以从以下公式推导：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>（<!----> 且 <!---->）或（<!----> 且 <!---->）</p><p><!----></p><p>（否则）</p><p><!----></p><p>其中<!---->是地球的半径（米），<!---->是电离层壳体的高度（米）。RTKLIB通常使用<!---->和<!---->。请注意，在该模型中，地球表面或电离层壳体被近似为一个球体。</p><p>如果在IPP和时间<!---->处给出了VTEC（垂直总电子含量）值<!---->，则<!---->电离层延迟$I_{r,i}^s)（米）可以表示为：</p><p><!----></p><p>其中<!---->是信号的载波频率（Hz）。</p><p>VTEC值以几种格式或方程提供。RTKLIB目前仅支持IONEX格式提供的VTEC值。在IONEX格式中，VTEC表示为纬度和经度网格中的点值。RTKLIB通过简单的双线性插值将IONEX数据中的这些网格点值插值到合适的IPP位置。这些VTEC值在IONEX文件的每个历元时间间隔提供。时间插值也应应用于太阳固定坐标系，如下所示：</p><p><!----></p><p>其中，<!----> 和 <!----> (<!----> ) 是提供的TEC数据的时间，<!----> 是太阳相对于地球的旋转速度。如果处理选项 &quot;Ionosphere Correction&quot; 设置为 &quot;IONEX TEC&quot; 并且IONEX数据仅在后处理模式下作为输入文件提供，则应用单层模型和IONEX数据的校正。</p><p><strong>7. 无电离层影响的LC（线性组合）</strong></p><p>为了消除GNSS信号测量中的电离层影响，通常在GNSS数据处理中利用双频测量的LC（线性组合）。<!---->和<!---->伪距和相位差的无电离层LC表示为：</p><p><!----></p><p><!----></p><p>其中<!---->和<!---->是无电离层影响的LC的系数。<!---->和<!---->由以下公式导出：</p><p><!----></p><p><!----></p><p>其中<!---->和<!---->是<!---->和<!---->测量的频率（Hz）。当前版本的RTKLIB总是对GPS、GLONASS和QZSS使用<!---->和<!---->，对Galileo使用<!---->和<!---->进行无电离层影响的LC。如果在单一或PPP模式下将处理选项 &quot;Ionosphere Correction&quot; 设置为 &quot;Iono-Free LC&quot;，则无电离层影响的LC用于基本测量以消除电离层项。请注意，无电离层影响的LC模型不适用于Kinematic、Static或Moving-base模式。详情请参阅E.7(6)。</p><h2 id="e-6-单点定位" tabindex="-1">E.6 单点定位 <a class="header-anchor" href="#e-6-单点定位" aria-label="Permalink to &quot;E.6 单点定位&quot;">​</a></h2><p>RTKLIB采用迭代加权最小二乘法（LSE）用于“Single”（单点定位）模式，无论是否使用SBAS校正。</p><p><strong>1. 线性LSE</strong></p><p>假设给定测量向量<!---->，它可以被建模为未知参数向量<!---->和一个随机测量误差向量<!---->的以下线性方程：</p><p><!----></p><p>最小二乘代价函数<!---->定义为测量误差的平方和：</p><p><!----></p><p>通过使用(E.6.1)和(E.6.2)，代价函数可以重写为：</p><p><!----></p><p>为了最小化代价函数，<!---->的梯度应该为零。然后</p><p><!----></p><p>这给出了所谓的“正规方程”：</p><p><!----></p><p>为了解正规方程，我们可以通过最小二乘法得到估计的未知参数向量<!---->：</p><p><!----></p><p>如果给定了每个测量的权重，可以使用权重矩阵<!---->重写代价函数(E.6.3)。</p><p><!----></p><p>为了最小化代价函数<!---->，我们可以通过加权最小二乘法（WLS）以类似简单最小二乘法的方式获得估计的未知参数向量<!---->：</p><p><!----></p><p>加权最小二乘法（WLS）的权重矩阵<!---->通常定义为：</p><p><!----></p><p>其中<!---->是第<!---->个测量误差的先验标准差。</p><p><strong>2. 非线性最小二乘的高斯-牛顿迭代</strong></p><p>如果测量值不是以线性模型给出的，测量方程可以由一个通用的非线性向量函数表示为：</p><p><!----></p><p>其中<!---->是参数向量<!---->的测量向量函数。该方程可以通过在初始参数向量<!---->周围使用泰勒级数展开来扩展：</p><p><!----></p><p>其中<!---->是<!---->关于<!---->在<!---->处的偏导数矩阵：</p><p><!----></p><p>假设初始参数足够接近真实值，并且可以忽略泰勒级数的第二项和后续项。我们可以将(E.6.9)近似为：</p><p>假设初始参数足够接近真实值，并且可以忽略泰勒级数的第二项和后续项。我们可以将(E.6.9)近似为：</p><p><!----></p><p>然后我们可以得到以下线性方程。</p><p><!----></p><p>通过将线性加权最小二乘法（E.6.8）应用于(E.6.13)，我们可以得到非线性加权最小二乘法的正规方程：</p><p><!----></p><p>因此，我们可以通过以下方式获得估计的未知参数向量<!---->：</p><p><!----></p><p>如果初始参数<!---->不够接近真实值，我们可以迭代改进估计参数如下：</p><p><!----></p><p><!----></p><p>如果迭代收敛，我们可以得到最终的估计参数为：</p><p><!----></p><p>迭代最小二乘法通常被称为高斯-牛顿方法。请注意，对于具有较大非线性的病态测量方程，简单的高斯-牛顿方法并不总是能够收敛。在这些情况下，我们应该采用另一种策略来处理这种非线性最小二乘问题。对于非线性最小二乘法，最流行的方法是非线性最小二乘的LM（Levenberg-Marquardt）方法。</p><p><strong>3. 接收机位置和时钟偏差的估计</strong></p><p>对于“Single”模式作为“Positioning Mode”，应用以下单点定位过程，通过逐历元的方式获得最终解。对于一个历元时间，未知参数向量<!---->定义为：</p><p><!----></p><p>伪距测量向量<!---->可以表示为：</p><p><!----></p><p>其中<!---->是伪距测量。如果处理选项&quot;Ionosphere Correction&quot;设置为&quot;Iono-Free LC&quot;，则使用附录E.5 (7)中定义的无电离层影响的LC（线性组合）伪距。在其他情况下，仅使用<!---->伪距。</p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250220-204634.jpg" alt=" Satellite Geometry for Single Point Positioning"></p><p style="text-align:center;">图E.6-1 单点定位的卫星几何结构</p><p>单点定位的测量方程及其偏导数矩阵构成如下：</p><p><!----></p><p>其中几何距离<!---->和视线（LOS）向量<!---->由E.3 (4)和E.3 (5)给出，结合卫星和接收机的位置。卫星位置<!---->和时钟偏差<!---->也根据处理选项“Satellite Ephemeris/Clock”从E.4中描述的GNSS卫星星历和时钟导出。</p><p>为了求解测量方程以获得最终估计的接收机位置和接收机时钟偏差，RTKLIB采用迭代加权最小二乘法（LSE），如下所示：</p><p><!----></p><p>对于迭代加权最小二乘法的初始参数向量<!---->，在单点定位的第一个历元中仅使用全0。一旦获得解，该位置将用作下一个历元的初始接收机位置。对于权重矩阵<!---->，RTKLIB使用以下公式：</p><p><!----></p><p><!----></p><p>其中：</p><p><!---->：卫星系统误差因子<br> （1: GPS, Galileo, QZSS和Beidou, 1.5: GLONASS, 3.0: SBAS）<br><!---->：码/载波相位误差比<br><!---->：载波相位误差因子<!---->和<!---->（米）<br><!---->：星历和时钟误差的标准差（米）<br><!---->：电离层校正模型误差的标准差（米）<br><!---->：对流层校正模型误差的标准差（米）<br><!---->：码偏差误差的标准差（米）</p><p>对于星历和时钟误差的标准差，RTKLIB中使用了URA（用户范围精度）或类似的指标。通过几次迭代，通常情况下解会收敛，并获得估计的接收机位置<!---->和接收机时钟偏差<!---->。</p><p><!----></p><p>估计的接收机时钟偏差<!---->没有明确输出到解文件中。相反，它被合并在解的时间标签中。这意味着解的时间标签指示的不是接收机的时间标签，而是GPST中测量到的真实信号接收时间。</p><p><strong>4. 接收机速度和时钟漂移的估计</strong></p><p>如果给出了GNSS信号的多普勒频率测量值，可以按照以下过程估计接收机速度和时钟漂移。对于一个历元时间，速度估计的未知参数向量<!---->定义为：</p><p><!----></p><p>其中<!---->和<!---->分别是接收机速度在ECEF（地心地固坐标系）中的速度（米/秒）和接收机时钟漂移（秒/秒）。相对应的速率测量向量<!---->可以表示为：</p><p><!----></p><p>其中<!---->是卫星<!---->的<!---->多普勒频率测量值。RTKLIB总是使用<!---->多普勒频率测量值。这些测量方程及其偏导数矩阵构成如下：</p><p><!----></p><p>这些方程中接收机和卫星之间的距离速率<!---->从以下公式推导：</p><p><!----></p><p>其中<!---->和<!---->。通过使用类似于接收机位置估计的迭代最小二乘法，我们可以获得接收机速度和时钟漂移：</p><p><!----></p><p>其中权重矩阵<!---->设置为<!---->（非加权最小二乘法）。</p><p><strong>5. 解的验证和RAIM FDE</strong></p><p>在(3)中描述的估计接收机位置可能由于未建模的测量误差而包含无效解。为了测试是否为有效解并拒绝无效解，RTKLIB在获得接收机位置估计后应用以下验证。如果验证失败，将发出警告信息拒绝该解。</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中<!---->是估计参数的数量，<!---->是测量的数量。<!----> 是自由度n和α=0.001（0.1%）的卡方分布。GDOP是几何精度因子（dilution of precision）。<!----> ​ 可以设置为处理选项“Reject Threshold of GDOP”。</p><p>除了上述解决方案验证之外，RTKLIB在版本2.4.4.2中增加了RAIM（接收机自主完整性监控）FDE（故障检测和排除）功能。如果启用了处理选项“RAIM FDE”并且(E.6.333)中的卡方检验失败，RTKLIB将通过逐个排除可见卫星来重试估计。在所有重试后，选择具有最小归一化平方残差<!---->的估计接收机位置作为最终解。在这种方案中，由于卫星故障、接收机故障或大的多路径导致的无效测量值将被排除为异常值。请注意，此功能在两个或更多无效测量值时无效。它还需要两个冗余的可见卫星，这意味着至少需要6个可见卫星才能获得最终解。</p><h2 id="e-7-kinematic-static-and-moving-baseline" tabindex="-1">E.7 Kinematic, Static and Moving-Baseline <a class="header-anchor" href="#e-7-kinematic-static-and-moving-baseline" aria-label="Permalink to &quot;E.7 Kinematic, Static and Moving-Baseline&quot;">​</a></h2><p>RTKLIB采用扩展卡尔曼滤波器（EKF）以获得DGPS/DGNSS、Static、Kinematic、Moving-base模式下的最终解，并结合附录E.3中的GNSS信号测量模型以及附录E.5中的对流层和电离层模型。</p><h3 id="_7-1-ekf公式" tabindex="-1">7.1 EKF公式 <a class="header-anchor" href="#_7-1-ekf公式" aria-label="Permalink to &quot;7.1 EKF公式&quot;">​</a></h3><p>通过使用扩展卡尔曼滤波滤波器（EKF），可以在历元时间<!---->通过测量向量<!---->估计未知模型参数的状态向量<!---->及其协方差矩阵<!---->：</p><p><!----></p><p><!----></p><p><!----></p><p>其中<!---->和<!---->是历元时间的<!---->估计状态向量和其协方差矩阵。−和+表示EKF测量更新之前和之后。<!---->，<!---->和<!---->分别是测量模型向量、偏导数矩阵和测量误差的协方差矩阵。假设系统模型是线性的，EKF的状态向量和其协方差矩阵的时间更新表示为：</p><p><!----></p><p><!----></p><p>其中<!---->和<!---->是从历元时间<!---->到<!---->的系统噪声的转移矩阵和协方差矩阵。</p><h3 id="_7-2-双差观测模型" tabindex="-1">7.2 双差观测模型 <a class="header-anchor" href="#_7-2-双差观测模型" aria-label="Permalink to &quot;7.2 双差观测模型&quot;">​</a></h3><p>对于短基线（&lt;10公里）的载波相对定位，通常使用以下双差（DD）测量方程来处理<!---->相位差和伪距。在这些方程中，通过使用双差技术，卫星和接收机的时钟偏差、电离层和对流层影响以及其他次要修正项几乎被消除。</p><p><!----></p><p><!----></p><p><img src="https://raw.githubusercontent.com/salmoshu/Winchell-ImgBed/main/img/20250220-223859.jpg" alt="DD (double-difference) Formulation"></p><p style="text-align:center;">图E.7-1 双差模型</p><p>其中<!---->是载波相位修正项，在短基线情况下可以忽略，除非接收机PCV项因使用不同天线而需要考虑。为了在方程中获得几何距离<!---->，基站位置<!---->固定为预定值，除非在移动基线情况下。</p><p>请注意，接收机之间的单差（SD）最好在具有相同历元时间的测量之间进行。然而，由于不同的接收机时钟偏差，接收机并不能完全同步。在一些典型情况下，移动站的采样间隔与基站不同，例如10 Hz和1 Hz。为了控制单差，RTKLIB采用了一个简单的标准来选择测量对。RTKLIB简单地选择在移动站测量的历元时间之前或等于该历元时间的最后一个测量。移动站和基站之间的历元时间差有时被称为“Age of Differential”。随着时间差的增加，由于卫星时钟漂移和电离层延迟的变化，解的精度逐渐降低。为了仅补偿卫星时钟漂移，RTKLIB使用广播的卫星时钟参数对单差测量进行修正。最大“Age of Differential”设置为处理选项“MAX Age of Diff”。 至于卫星侧的单差生成，RTKLIB在每个历元的基础上选择一个具有最大仰角的参考卫星。请注意，不同导航系统之间的卫星不会生成卫星侧的单差，例如GPS和GLONASS之间。这是因为即使不同导航系统的信号具有相同的载波频率，接收机通常对这些信号有不同的群延迟。接收机中的群延迟差异被称为接收机ISB（inter system bias）。</p><p>假设移动站和基站均使用三频GPS/GNSS接收机，待估计的未知状态向量<!---->可定义为：</p><p><!----></p><p>其中<!---->是<!---->单差（SD）载波相位偏差（周期）。在RTKLIB的实现中，它内部使用SD载波相位偏差而不是双差（DD），以避免繁琐的参考卫星切换处理。SD偏差还有助于解决GLONASS FDMA信号中的整数模糊度。</p><p>测量向量<!---->也定义为包含双差相位差和伪距测量值：</p><p><!----></p><p>其中：</p><p><!----></p><p><!----></p><h3 id="_7-3-ekf量测更新" tabindex="-1">7.3 EKF量测更新 <a class="header-anchor" href="#_7-3-ekf量测更新" aria-label="Permalink to &quot;7.3 EKF量测更新&quot;">​</a></h3><p>通过使用方程(E.7.6)，测量模型向量<!---->、偏导数矩阵<!---->和测量误差的协方差矩阵<!---->可以表示为：</p><p><!----></p><p><!----></p><p><!----></p><p>其中：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p><!---->：<!---->相位差测量误差的标准差（米）</p><p><!---->：<!---->伪距测量误差的标准差（米）</p><p>通过求解EKF公式(E.7.1)，可以获得历元时间<!---->处估计的移动站天线位置、速度和浮点单差载波相位偏差。</p><h3 id="_7-4-ekf时间更新" tabindex="-1">7.4 EKF时间更新 <a class="header-anchor" href="#_7-4-ekf时间更新" aria-label="Permalink to &quot;7.4 EKF时间更新&quot;">​</a></h3><p>在RTKLIB中，对于具有接收机动态的运动定位模式（Positioning Mode = Kinematic 并且 REC Dynamics = ON），EKF的时间更新（E.7.2）表示为：</p><p><!----></p><p>其中：</p><p><!----></p><p>并且<!---->是GPS/GNSS接收机采样间隔（s），<!---->是移动站速度系统噪声的东西、北、上分量的标准差（m/s/√s）。</p><p>对于纯运动学模式且不考虑接收机动态（Positioning Mode = Kinematic, REC Dynamics = OFF），方程(E.7.9)被替换为：</p><p><!----></p><p>为了避免因将无限大的过程噪声添加到接收机位置的方差而导致数值不稳定，接收机位置状态在每个历元被重置为初始猜测值，并且在RTKLIB中向方差中添加了足够大的过程噪声（<!---->）。初始位置是从单点定位过程导出的，该过程用于避免非线性信号测量模型的迭代。</p><p>在静态模式（Positioning Mode = Static）中，方程(E.7.10)被简单地替换为：</p><p><!----></p><p>在瞬时模糊度解算模式（整数模糊度解算=瞬时）中，SD载波相位偏差<!---->的时间更新处理方式与上述略有不同。在这种模式下，载波相位偏差状态的值不会通过EKF时间更新传递到下一个历元。偏差在每个历元被重置为初始猜测值，并且在方差中添加了足够大的过程噪声（<!---->）。如果在测量数据中检测到周跳，相应的SD载波相位偏差状态也会被重置为初始值。RTKLIB通过输入测量数据中的LLI（失锁指示）和双频测量的无几何LC（线性组合）相位跳变来检测周跳。周跳阈值可以通过处理选项“Slip Thres”来更改。</p><h3 id="_7-5-整周模糊度解算" tabindex="-1">7.5 整周模糊度解算 <a class="header-anchor" href="#_7-5-整周模糊度解算" aria-label="Permalink to &quot;7.5 整周模糊度解算&quot;">​</a></h3><p>一旦在EKF测量更新中获得估计状态，浮点载波相位模糊度可以被解算为整数值，以提高精度和收敛时间（Integer Ambiguity Res = Continuous, Instantaneous or Fix and Hold）。首先，估计状态及其协方差矩阵通过以下方式转换为双差（DD）形式：</p><p><!----></p><p><!----></p><p>其中：</p><p><!----></p><p>在这个转换过程中，SD 载波相位偏差被转换为 DD 载波相位形式，以消除接收机初始相位项，从而获得整数模糊度 <!----> 及其协方差 <!---->。在这些公式中，通过求解一个整数最小二乘（ILS）问题，可以得到最合适的整数模糊度向量 <!---->，该问题表示为：</p><p><!----></p><p>其中，<!----> 表示整数集。</p><p>为了解决ILS问题，RTKLIB采用了一种著名的高效搜索策略LAMBDA [66]及其扩展MLAMBDA [67]。LAMBDA和MLAMBDA提供了线性变换和变换空间中熟练的树搜索过程的组合，以缩小整数向量搜索空间。这些过程得到的整数向量解通过以下简单的“Ratio-Test”进行验证。在“Ratio-Test”中，比率因子 <!----> 定义为次优解 <!----> 的加权残差平方和最优 <!----> 的加权残差平方和的比值，用于检查解的可靠性。验证阈值 <!----> 可以通过处理选项“Min Ratio to Fix Ambiguity”设置。当前版本的RTKLIB仅支持固定的阈值。</p><p><!----></p><p>验证之后，Rover天线位置和速度的“FIXED”解 <!----> 和 <!----> 通过求解以下方程获得。如果验证失败，RTKLIB 则输出“FLOAT”解 <!----> 和 <!----> 代替。</p><p><!----></p><p>如果处理选项设置为“Fix and Hold”模式（整周模糊度解析 = Fix and Hold），并且固定解通过之前的测试被正确验证，则双差载波相位偏差参数会被严格约束到固定的整数值。为此，RTKLIB 会输入以下“伪”测量值到 EKF，并通过公式 (E.7.1) 更新 EKF：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中：</p><p><!----></p><p><!----> : 约束到固定整数模糊度的误差（≈ 0.001 cycle）</p><p>“Fix and Hold”模式最初在 RTKLIB 版本 2.4.0 中引入，目的是在运动接收机的运动模式下特别提高固定解的比率。</p><h3 id="_7-6-长基线双差测量模型" tabindex="-1">7.6 长基线双差测量模型 <a class="header-anchor" href="#_7-6-长基线双差测量模型" aria-label="Permalink to &quot;7.6 长基线双差测量模型&quot;">​</a></h3><p>对于接收机r和基站b之间的长基线处理，可以形成类似于短基线双差（DD）模型的以下双差测量方程：</p><p><!----></p><p>其中<!---->和<!---->作为<!---->电离层延迟（米）和对流层延迟（米）被添加到短基线双差模型中。对于超过100公里的基线，应使用精确的星历书来减轻广播星历误差。在载波相位修正项<!---->中，对于超过500公里的基线应考虑地球潮效应。为了消除电离层项，有时会形成无电离层LC（线性组合）。然而，RTKLIB不使用这种显式LC，而是通过EKF直接估计基线处理的双频或三频测量的电离层项。</p><p>长基线情况下的未知状态向量 <!----> 也可以设定为：</p><p><!----></p><p>其中 <!----> 和 <!----> 是 ZTD（zenith total delay）在Rover和基站位置的值，<!---->、<!---->、<!----> 和 <!----> 是对流层梯度的北向和东向分量。<!----> 是 <!----> 频率（<!---->）下的SD垂直电离层延迟。</p><p>测量模型向量 <!----> 和偏导数矩阵 <!----> 可以表示为：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中：</p><p><!----></p><p><!----></p><p><!----></p><p>对于长基线情况，EKF 的时间更新表达式为：</p><p><!----></p><p><!----></p><p>其中，<!---->和<!---->分别为电离层和对流层项的过程噪声协方差矩阵。在该方程中，Rover和基站的ZTD（天顶总延迟）及梯度参数，以及每颗卫星的SD（单差）垂直电离层延迟，均被简单地建模为随机游走过程。此外，为了估计电离层和对流层项，在2.4.1版本中为长基线处理增加了一个“部分固定”功能。这意味着只有部分模糊度被解算为整数值，其余未固定的模糊度仍保持为浮点值。为了确定模糊度是否固定，RTKLIB中实现了一个使用卫星仰角的简单标准。如果卫星的仰角低于设定的阈值，则该卫星的模糊度不会被固定。只有仰角高于阈值的卫星的模糊度才会被解算为整数。模糊度解算的仰角阈值可以通过处理选项“最小仰角固定模糊度”（Min Elevation to Fix Amb）以及“最小仰角保持模糊度”（Min Elevation to Hold Amb）来设置，以控制“固定和保持”（Fix and Hold）功能。</p><h3 id="_7-7-动态基线模型" tabindex="-1">7.7 动态基线模型 <a class="header-anchor" href="#_7-7-动态基线模型" aria-label="Permalink to &quot;7.7 动态基线模型&quot;">​</a></h3><p>移动基线模式通常在Rover和基站接收器都在移动且仅需要Rover相对于基站的相对位置时使用。通过在移动平台上安装两个天线，可以利用移动基线模式确定精确姿态。在 RTKLIB 中，如果将处理选项“定位模式”设置为“移动基线”，则应用移动基线模式。</p><p>在移动基线模式下，基站位置不是固定的，而是通过逐历元的单点定位过程估计的。一旦获得基站位置，将基站位置固定为估计位置，并通过 (1)-(5) 中描述的短基线运动模式估计Rover位置。在这种情况下，只有相对位置是有意义的，也就是说，Rover和基站的绝对位置解的精度仅与点定位模式的解相同。</p><p>除了对移动基线模式的简单实现外，RTKLIB 还校正了Rover与基站之间的时间差异。Rover接收机和基站接收机不同步。接收机时钟差通常最大可达 2 毫秒。对于非常快速移动的平台，不同步的时钟会导致精度下降。为了校正时钟差，在基线处理之前，基站位置<!---->通过以下公式进行校正：</p><p><!----></p><p>其中，<!---->和 <!---->分别是通过单点定位过程估计的Rover和基站的信号接收时间。<!---->也是通过多普勒测量估计的基站速度。对于通过移动基线模式进行姿态确定的情况，如果启用处理选项“基线长度约束”（Baseline Length Constraint），则可以应用基线长度约束。该约束在 EKF 测量更新中应用以下伪测量：</p><p><!----></p><p><!----></p><p><!----></p><p><!----></p><p>其中，<!----> 是给定的预设基线长度（单位：米），<!---->是基线长度的约束（单位：米）。为了应对非常短的基线长度情况下的非线性问题，可以通过将处理选项“滤波器迭代次数”（Number of Filter Iteration）设置为大于1，来支持扩展卡尔曼滤波器（EKF）的迭代测量更新。</p><h2 id="e-8-ppp" tabindex="-1">E.8 PPP <a class="header-anchor" href="#e-8-ppp" aria-label="Permalink to &quot;E.8 PPP&quot;">​</a></h2><p>TBD</p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/08-appendixD.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>附录D. 文件与报文</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/algorithm/RTKLIB%E6%89%8B%E5%86%8C/10-appendixF.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>附录F. 配置文件</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"algorithm_rtklib手册_01-overview.md\":\"6xJh8N1H\",\"algorithm_rtklib手册_02-prepare.md\":\"DhM6QYXb\",\"algorithm_rtklib手册_03-instructions.md\":\"hewlMezp\",\"algorithm_rtklib手册_04-build.md\":\"D_hYCT-h\",\"algorithm_rtklib手册_05-appendixa.md\":\"BhwhXvVb\",\"algorithm_rtklib手册_06-appendixb.md\":\"FcCege9e\",\"algorithm_rtklib手册_07-appendixc.md\":\"DOrBFxO3\",\"algorithm_rtklib手册_08-appendixd.md\":\"BxhUVobU\",\"algorithm_rtklib手册_09-appendixe.md\":\"QREboJCg\",\"algorithm_rtklib手册_10-appendixf.md\":\"jN8iE6Qh\",\"algorithm_rtklib手册_11-appendixg.md\":\"gg5OTrsa\",\"algorithm_rtklib手册_12-reference.md\":\"DojW-9bQ\",\"algorithm_rtklib手册_index.md\":\"CYOu3XWl\",\"algorithm_rtklib源码解析_01_rtklib_manual.md\":\"1o_nyZBe\",\"algorithm_rtklib源码解析_02_rtklib_src.md\":\"BneXen_T\",\"algorithm_rtklib源码解析_readme.md\":\"B_yswSJT\",\"examples_api-examples.md\":\"ZBI7yQv-\",\"examples_markdown-examples.md\":\"DEV83eRb\",\"gui_readme.md\":\"BvoR-ckT\",\"gui_vitepress_01-tutorials.md\":\"Dd2BhpM4\",\"gui_vitepress_02-issues.md\":\"BJM2OW05\",\"gui_vitepress_readme.md\":\"BlPYhiGv\",\"index.md\":\"C0WQ2bVI\",\"knowledge_01-common.md\":\"C9jYKyxm\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Winchell\",\"description\":\"A VitePress Site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"https://i.ibb.co/F80kShv/doghead.jpg\",\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Examples\",\"link\":\"/examples/markdown-examples\"},{\"text\":\"RTK\",\"items\":[{\"text\":\"RTKLIB手册\",\"link\":\"/algorithm/RTKLIB手册/\"},{\"text\":\"RTKLIB源码解析\",\"link\":\"/algorithm/RTKLIB源码解析/\"}]},{\"text\":\"GUI\",\"items\":[{\"text\":\"Vitepress\",\"link\":\"/gui/vitepress/01-tutorials\"}]},{\"text\":\"Knowledge\",\"link\":\"/knowledge/01-common\"}],\"sidebar\":{\"/examples/\":[{\"text\":\"Examples\",\"items\":[{\"text\":\"Markdown Examples\",\"link\":\"/examples/markdown-examples\"},{\"text\":\"Runtime API Examples\",\"link\":\"/examples/api-examples\"}]}],\"/algorithm/RTKLIB手册/\":[{\"text\":\"RTKLIB手册\",\"link\":\"/algorithm/RTKLIB手册/\"},{\"text\":\"1. 摘要\",\"link\":\"/algorithm/RTKLIB手册/01-overview\"},{\"text\":\"2. 准备\",\"link\":\"/algorithm/RTKLIB手册/02-prepare\"},{\"text\":\"3. 操作指南\",\"link\":\"/algorithm/RTKLIB手册/03-instructions\"},{\"text\":\"4. 应用构建\",\"link\":\"/algorithm/RTKLIB手册/04-build\"},{\"text\":\"附录A. CUI指令\",\"link\":\"/algorithm/RTKLIB手册/05-appendixA\"},{\"text\":\"附录B. 文件格式\",\"link\":\"/algorithm/RTKLIB手册/06-appendixB\"},{\"text\":\"附录C. C API\",\"link\":\"/algorithm/RTKLIB手册/07-appendixC\"},{\"text\":\"附录D. 文件与报文\",\"link\":\"/algorithm/RTKLIB手册/08-appendixD\"},{\"text\":\"附录E. 模型与算法\",\"link\":\"/algorithm/RTKLIB手册/09-appendixE\"},{\"text\":\"附录F. 配置文件\",\"link\":\"/algorithm/RTKLIB手册/10-appendixF\"},{\"text\":\"附录G. GNSS信号\",\"link\":\"/algorithm/RTKLIB手册/11-appendixG\"},{\"text\":\"参考文献\",\"link\":\"/algorithm/RTKLIB手册/12-reference\"}],\"/gui/vitepress/\":[{\"text\":\"Vitepress\",\"link\":\"/gui/vitepress/01-tutorials\"}]},\"outline\":{\"label\":\"目录\",\"level\":[2,3]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/vuejs/vitepress\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
    
  </body>
</html>